Recent advances in integrated circuit technology have led to the proliferation of System-on-chip (SoC) architectures, which integrate all or nearly all necessary electronic circuits of diverse functions onto a single chip. Having various parts and components fabricated on a single chip, a SoC is well suited to function as a final product itself. Accordingly, SoCs are widely used in the area of embedded systems.
SoC can be designed to operate in different markets and environments, but in operation, it is often configured for a specific application. In other words, actual functions of a SoC are limited by some forms of configurations means, even though the SoC is capable of performing a variety of additional functions. An embedded controller (EC) in a SoC often uses non-volatile flash memory to store program information as well as data. A typical flash intellectual property (IP) block often contains an extra block or two of memory, sometimes called an Info Block, which the IP vendors propose as usable for storing configuration data. In this setting, the EC reads the Info Block and updates registers of the SoC according to a firmware stored in the main flash body or possibly in a Read Only Memory (ROM). At a lower configuration level, however, some functions of the SoC must be configured prior to the EC and the firmware configures the SoC. Such pre-firmware execution configurations, which are not controlled by the firmware, include: (1) trimming analog functions such as Analog-Digital Converters or oscillators; (2) managing security information such as a serial number; and (3) restricting hardware/software functionality of the device for product differentiation purposes or other reasons. These low-level configurations are typically stored in One-Time Programmable (OTP) memories implemented in a programmable read only memory (e.g., PROM) or a non-volatile memory (OTP NVM). Such devices may be written or programmed once, and then further steps are taken to prevent them from being reprogrammed or erased afterward.
While a typical OTP memory can provide an effective tamper-proof configuration mechanism, that solution has several drawbacks. First, an OTP memory, being a special purpose memory block purchased from an IP vendor, increases a SoC's total bill of material (BOM). Moreover, incorporating an OTP memory in a SoC often requires a more expensive process. Increase in functionality of SoCs usually requires larger configuration data, which inevitably adds even more OTP memory associated cost. Second, a typical OTP memory can be programmed only once. That limitation makes laboratory or field experimentations difficult, because any changes in the configuration parameters require a new device. Also, a SoC's configuration requirement can change after the SoC or the device employing the SoC is fabricated. For example, design changes may dictate that some SoC components to be disabled for changed power requirements or the like. In some cases, reconfiguration is needed to enable and disable features as part of a product differentiation scheme. In these scenarios, a typical OTP memory cannot adapt to SoC design changes or to revised configuration data.
Further, configuring a SoC entirely with EC firmware is insecure. An unscrupulous user can modify the firmware to bypass the configuration limitations that restrict access to features usable only in higher priced versions, for example. Also, unstable firmware or a problem during firmware update process may render the device permanently inoperable.
Attempts have been made to solve these problems. For example, emulating one-time programmability using a flash memory has been described in the U.S. Pat. No. 7,991,943, titled “Implementation of One Time Programmable Memory with Embedded Flash Memory in a System-on-Chip”. Such solutions are designed for a particular SoC for a particular application, however, and those solutions are often very difficult to adapt to configuration requirement changes.
Thus, there remains a need for a system and a method for implementing extensible hardware device configuration that can adapt to varying configuration requirements.